<!doctype html>
<html lang="en">

  <head>
    <meta charset="utf-8">

    <title>Paperless</title>

    <meta name="description" content="A breakdown of what's different and why Django is amazeballs">
    <meta name="author" content="Daniel Quinn">

    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">

    <link rel="stylesheet" href="css/reveal.css">
    <link rel="stylesheet" href="css/theme/league.css" id="theme">

    <!-- Code syntax highlighting -->
    <link rel="stylesheet" href="lib/css/zenburn.css">

    <!-- Printing and PDF exports -->
    <script>
      var link = document.createElement('link');
      link.rel = 'stylesheet';
      link.type = 'text/css';
      link.href = window.location.search.match(/print-pdf/gi) ? 'css/print/pdf.css' : 'css/print/paper.css';
      document.getElementsByTagName('head')[0].appendChild( link );
    </script>

    <!--[if lt IE 9]>
    <script src="lib/js/html5shiv.js"></script>
    <![endif]-->

    <style>
      .reveal pre code {
        background-color: rgba(63,63,63,0.8);
      }
      li, p {
        text-shadow: 3px 3px 3px rgb(0, 0, 0);
      }
      a.nocolour {
          color: rgb(255, 255, 255);
      }
    </style>

    <link rel="stylesheet" href="contrib/font-awesome-4.3.0/css/font-awesome.min.css">

  </head>

  <body>

    <div class="reveal">

      <!-- Any section element inside of this container is displayed as a slide -->
      <div class="slides">

        <section>
          <br />
          <br />
          <h1>Paperless</h1>
          <p><small>
            <i class="fa fa-twitter"></i> &nbsp; <a class="nocolour" href="https://twitter.com/searchingfortao">@searchingfortao</a>
            &nbsp; | &nbsp;
            <i class="fa fa-github"></i> &nbsp; <a class="nocolour" href="https://github.com/danielquinn">danielquinn</a>
            &nbsp; | &nbsp;
            <i class="fa fa-globe"></i> &nbsp; <a class="nocolour" href="http://danielquinn.org/">danielquinn.org</a>
          </small></p>
          <br />
        </section>

        <section>
          <h2>My Inspiration</h2>
          <img src="img/stack.jpg" style="width: 50%;" /><br />
        </section>

        <section>
          <section>
            <h2>Paper Sucks</h2>
          </section>
          <section>
            <h2>Paper Loves Being Mysterious</h2>
            <p>There's No Ctrl+F</p>
          </section>
          <section>
            <h2>Paper Hates Your Spine</h2>
            <p>It's heavy and takes up space</p>
          </section>
          <section>
            <h2>Paper Wants to Breed</h2>
            <p>Backups? More Paper!</p>
          </section>
          <section>
            <h2>Paper Hates the Planet</h2>
          </section>
        </section>

        <section>
          <h2>It's 2016</h2>
          <p>We shouldn't even need to use this stuff anymore</p>
          <p>So I made Paperless</p>
        </section>

        <section>
          <h2>What's it Do?</h2>
          <ul>
            <li>Consumes documents from a directory, API, or mailbox</li>
            <li>OCRs them and puts the text in a database</li>
            <li>Automatically tags the db record based on user-rules</li>
            <li>Encrypts and stores the original</li>
          </ul>
        </section>

        <section>
          <h2>It's Just a Wrapper</h2>
          <ul>
            <li>ImageMagick</li>
            <li>Tesseract</li>
            <li>GnuPG</li>
            <li>Python3/Django</li>
          </ul>
        </section>

        <section>
          <h2>How's it Work?</h2>
          <section>
          </section>
          <section>
            <h3>1: The Consumer</h3>
            <p style="padding: 1em;">(Imports documents)</p>
            <ul>
              <li>Runs in a loop</li>
              <li>Reads from a directory</li>
              <li>Occasionally checking a mailbox</li>
            </ul>
          </section>
          <section>
            <h3>2: The Webserver</h3>
            <p style="padding: 1em;">(Lets you find stuff)</p>
            <ul>
              <li>Currently the Django Admin (I know)</li>
              <li>Provides a DRF API</li>
              <li>Users are building proper UIs</li>
            </ul>
          </section>
        </section>

        <section data-background="img/pony.png">
          <h2>Demo!</h2>
          <img src="img/kitten.jpg" style="width: 50%;" />
        </section>

        <section>
          <h2>TODO</h2>
          <p>It works, but it needs polish</p>
          <ul>
            <li>The UI is the Django admin</li>
            <li>Mail consumption is really raw</li>
            <li>Some sort of plugin architecture?</li>
            <li>OMG Tests</li>
          </ul>
          <aside class="notes">
            <ul>
              <li>
                <strong>Plugin architecture</strong>: there've been requests
                for some overly custom stuff to happen before and after
                consumption, but in the UNIX spirit of "do one job well", I
                think this sort of thing is better written as a plugin -- which
                means I need to figure out a best practise for that.
              </li>
            </ul>
          </aside>
        </section>

        <section>
          <h2>Fork Me</h2>
          <p>
            <i class="fa fa-github"></i> &nbsp;
            <a class="nocolour" href="https://github.com/the-paperless-project/paperless">https://github.com/the-paperless-project/paperless</a>
          </p>
          <img src="img/repo.svg" style="width: 300px;" /><br />
        </section>

      </div>

    </div>

    <script src="lib/js/head.min.js"></script>
    <script src="js/reveal.js"></script>

    <script>

      // Full list of configuration options available at:
      // https://github.com/hakimel/reveal.js#configuration
      Reveal.initialize({
        controls: true,
        progress: true,
        history: true,
        center: true,

        transition: 'convex', // none/fade/slide/convex/concave/zoom
        backgroundTransition: 'zoom',
        loop: true,

        // Optional reveal.js plugins
        dependencies: [
          { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
          { src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
          { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
          { src: 'plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
          { src: 'plugin/zoom-js/zoom.js', async: true },
          { src: 'plugin/notes/notes.js', async: true }
        ]
      });

    </script>

  </body>
</html>
